#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QDebug>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    setWindowTitle("图形绘制综合案例分析（双缓冲机制）");
    draw=new DrawWidget(this);
    CreatToolBar();
    this->setCentralWidget(draw);
    draw->getFontWidth(3);
    draw->getfontType(1);

}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::ChangbtnColor()
{
    QColor color=QColorDialog::getColor(static_cast<int>(Qt::black),this);
    if(color.isValid())
    {
        qDebug()<<color;
        draw->getColor1(color);
        QPixmap ps(20,20);
        ps.fill(color);
        toolbarColor->setIcon(QIcon(ps));
    }


}

void MainWindow::mySot(int index)
{
    //在您提供的修改后的槽函数onComboBoxIndexChanged中，您试图直接将传入的index参数（它是QComboBox当前选中项的索引）转换为Qt::PenStyle枚举类型。然而，这是不正确的，因为index是一个整数，它表示项在QComboBox中的位置（从0开始），而不是与该项相关联的Qt::PenStyle枚举值。

    //    在原始代码中，currentData().toInt()被用来检索与当前选中项相关联的数据，这个数据是通过addItem方法的第二个参数设置的，即static_cast<int>(Qt::SolidLine)等。因此，要正确获取用户选择的线条样式，您应该继续使用currentData().toInt()方法，而不是直接使用index。
    draw->getfontType(cb->itemData(cb->currentIndex(), Qt::UserRole).toInt());
}

void MainWindow::CreatToolBar()
{
    toolbarColor=new QToolButton;
    toolbtnClear=new QToolButton;
    toolbtnClear->setText("清除绘制");

    QPixmap pixmap(20,20);
    pixmap.fill(Qt::black);

    toolbarColor->setIcon(QIcon(pixmap));

    connect(toolbarColor,&QToolButton::clicked,this,&MainWindow::ChangbtnColor);
    lbLs=new QLabel;
    lbLs->setText("线形风格");
    cb=new QComboBox;

    lbLw= new QLabel;
    lbLw->setText("线型宽度");
    spinbox=new QSpinBox;


    QToolBar *toolBar=addToolBar("Tool");

    cb->addItem("SolidLine",static_cast<int>(Qt::SolidLine)); // 实线
    cb->addItem("DashLine",static_cast<int>(Qt::DashLine)); //
    cb->addItem("DashDotDotLine",static_cast<int>(Qt::DashDotDotLine));
    cb->addItem("DotLine",static_cast<int>(Qt::DotLine)); // 虚线

    void (QComboBox::*p)(int index )=&QComboBox::activated;
    connect(cb,p,this,&MainWindow::mySot);
    //layout->addWidget(draw);

    void (QSpinBox::*p1)(int)=&QSpinBox::valueChanged;
    connect(spinbox,p1,draw,&DrawWidget::getFontWidth);
    toolBar->addWidget(lbLs);
    toolBar->addWidget(cb);
    toolBar->addWidget(lbLw);
    toolBar->addWidget(spinbox);
    toolBar->addWidget(toolbarColor);
    toolBar->addWidget(toolbtnClear);

    connect(toolbtnClear,&QToolButton::clicked,draw,&DrawWidget::ClearAll);

}

